﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using Microsoft.Xrm.Sdk;
using Ragim.Selfpub.CrmSolution.Plugins.Tools;
using System.Security.Principal;
using System.ServiceModel;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace Ragim.Selfpub.CrmSolution.WebApplication
{
    /// <summary>
    /// Summary description for UtilService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class UtilService : System.Web.Services.WebService
    {
        /// <summary>
        /// Проверяет доступкность сервиса
        /// </summary>
        /// <returns>Возвращает true, если веб-сервис доступен</returns>
        [WebMethod]
        public bool Ping()
        {
            return true;
        }

        /// <summary>
        /// Создает интерес в CRM Online
        /// </summary>
        /// <param name="firstName">Имя</param>
        /// <param name="lastName">Фамилия</param>
        /// <param name="phone">Телефон</param>
        /// <param name="email">Электронная почта</param>
        /// <param name="url">Адрес веб-сайта</param>
        /// <param name="campaign">Название рекламной кампании</param>
        /// <returns>Возвращает пустую строку, если процесс прошел без ошибок. В противном случае возвращает текст ошибки</returns>
        [WebMethod]
        public string CreateLead(string firstName, string lastName, string phone, string email, string url, string campaign)
        {
            string error;
            if (Integration.CreateLead(firstName, lastName, phone, email, url, campaign, out error))
                return "";
            else
                return error;
        }

        /// <summary>
        /// Генерирует КП и прикрепляет его к Предложению
        /// </summary>
        /// <param name="quoteId">ID Предложения (если не заполнено подставляет '5A2C49DE-9B12-E411-B54E-D89D67632E74')</param>
        /// <param name="connStr">Строка подключения к Directum (если не заполнено подставляет 'SystemCode=DIRECTUM;')</param>
        /// <returns>Возвращает пустую строку, если процесс прошел без ошибок. В противном случае возвращает текст ошибки</returns>
        [WebMethod]
        public string ExportQuote(string quoteId, string connStr)
        {
            if (string.IsNullOrEmpty(quoteId))
                quoteId = "5A2C49DE-9B12-E411-B54E-D89D67632E74";

            if (string.IsNullOrEmpty(connStr))
                connStr = "SystemCode=DIRECTUM;";
            //connStr = "SystemCode=EmptyDIR50;UserName=Administrator;Password=1Qwerty;IsOSAuth=False;IsVirtualPassword=False;";
            try
            {
                string error;
                if (Integration.ExportQuote(new Guid(quoteId), connStr, out error))
                    return "";
                else
                    return error;
            }
            catch (Exception ex)
            {
                return string.Format("Error [ExportQuote]: {0}", ex.ToString());
            }
        }

    }
}
